"use strict";
// 函数参数必须一一对应，多一个少一个都会报错
function buildName1(firstName, lastName) {
    return firstName + ' ' + lastName;
}
var name1 = buildName1('苏', '烈');
console.log(name1); // '苏 烈'
// 可选参数: 如果想灵活传参，可以使用可选参数，用？表示
function buildPerson1(name, age) {
    return { name: name, age: age };
}
var info1 = buildPerson1('花木兰');
console.log(info1); // {name: "花木兰", age: undefined}
var info2 = buildPerson1('花木兰', 19);
console.log(info2); // {name: "花木兰", age: 19}
// 默认参数，默认参数不必放在最后面，可以在任何位置，不想要使用默认参数可以用undefined或者null占位
function buildName2(firstName, lastName) {
    if (firstName === void 0) { firstName = '尼古拉斯'; }
    return firstName + '·' + lastName;
}
var name2 = buildName2(undefined, '凯');
console.log(name2); // '尼古拉斯·凯'
function buildPerson2(name, age) {
    if (age === void 0) { age = { a: 23, b: 16 }; }
    return { name: name, age: age.b };
}
var info3 = buildPerson2('百里守约', { a: 12, b: 19 });
console.log(info3); // {name: "百里守约", age: 19}
// 剩余参数
function buildName3(firstName) {
    var names = [];
    for (var _i = 1; _i < arguments.length; _i++) {
        names[_i - 1] = arguments[_i];
    }
    return firstName + ' ' + names.join(' ');
}
var name3 = buildName3('百里玄策', '王昭君', '貂蝉');
console.log(name3); // 百里玄策,王昭君,貂蝉
